﻿var i:Number;

/*****************************************************************/
/**************** ACTIVACIÓN DE LA PÁGINA BÁSICA *****************/
/*****************************************************************/
transicion_pagina = TransicionAlpha.aplicar(this);
transicion_pagina.alpha = 100;
transicion_pagina.hacer_gradual();

/*****************************************************************/
/************* APARICIÓN ESPECIAL (como en Pino Dorado) ***********/
/*****************************************************************/
// Activar este código en las páginas que aparecen toda la página junta con la sección activa en alpha
// INICIO CÓDIGO DEL OBJETO DE APARICIÓN CON ALPHA
/*
var stageL3:Object = new Object();   // tener en cuenta que el objeto stageL posiblemente esté usado en "script medidor ini.as"
stageL3.onResize = function() {
	_parent.super_fondo._width = Stage.width;
	_parent.super_fondo._height = Stage.height;
}
_parent.super_fondo._x = 0;
_parent.super_fondo._y = 0;
Stage.addListener(stageL3);
stageL3.onResize();
*/
// Activar este código en las páginas que aparecen toda junta con alpha
// y la transición alpha no queda bien.
// Precondición: existe el objeto _parent.super_fondo
//Tweener.addTween(_parent.super_fondo, {_alpha: 0, delay: 0, time: 0.5, transition: "linear", onComplete: fin_activar_pagina});
// FIN CÓDIGO DEL OBJETO DE APARICIÓN ESPECIAL (como en Pino Dorado)

/*****************************************************************/
/*********************** INTRO ***********************************/
/*****************************************************************/
// Activar este código para las páginas que tienen intro
// palabras clave de búsqueda: intro introducción introduccion presentación presentacion
// INICIO CÓDIGO CON INTRO

// transiciones de la intro. activación y desactivación de la intro
var transicion_activar_intro = TransicionAlpha.aplicar(intro);
var transicion_desactivar_intro = TransicionAlpha.aplicar(intro);
transicion_desactivar_intro.alpha = 0;
// código para evitar la superposición de links y del botón ingresar de la intro
transicion_desactivar_intro.addEventListener2("fin_transicion", this, "fin_intro");
transicion_activar_intro.addEventListener2("ini_transicion", this, "ini_intro");
function fin_intro() {
	intro._visible = false;
}
function ini_intro() {
	intro._visible = true;
}
// fin código para evitar la superposición de links y del botón ingresar de la intro

// no es necesario cambiar
Seccion.aplicar(intro, {transicion_activar: transicion_activar_intro, transicion_desactivar: transicion_desactivar_intro});
intro.activar();   // hip. intro.activar a su vez activa el botón ingresar

// transiciones del botón ingresar
var transicion_encender_boton_ingresar = TransicionColor.aplicar(intro.boton_ingresar);
transicion_encender_boton_ingresar.color = 0xf53d86;
transicion_encender_boton_ingresar.time = 0.3;
var transicion_apagar_boton_ingresar = TransicionColor.aplicar(intro.boton_ingresar);
var transicion_resaltar_boton_ingresar = TransicionColor.aplicar(intro.boton_ingresar);
transicion_resaltar_boton_ingresar.color = 0xf53d86;
transicion_resaltar_boton_ingresar.time = 0.3;
var transicion_desresaltar_boton_ingresar = TransicionColor.aplicar(intro.boton_ingresar);
Boton.aplicar(intro.boton_ingresar, {transicion_encender: transicion_encender_boton_ingresar, transicion_apagar: transicion_apagar_boton_ingresar, transicion_resaltar: transicion_resaltar_boton_ingresar, transicion_desresaltar: transicion_desresaltar_boton_ingresar});

// no es necesario cambiar
intro.boton_ingresar.addEventListener2("release", this, "desactivar_intro");
function desactivar_intro() {
	intro.desactivar();
	contenido.activar();
}

// ocultamiento del contenido (hasta que el usuario hace clic en el botón ingresar)
var transicion_activar_contenido = TransicionAlpha.aplicar(contenido);
var transicion_desactivar_contenido = TransicionAlpha.aplicar(contenido);
transicion_desactivar_contenido.alpha = 0;
transicion_desactivar_contenido.time = 0;

// no es necesario cambiar
Seccion.aplicar(contenido, {transicion_activar: transicion_activar_contenido, transicion_desactivar: transicion_desactivar_contenido});
contenido.desactivar();   // hip. intro.activar a su vez activa el botón ingresar

// Alineación al centro-centro de la intro. No es necesario cambiar.
MovieClipDimensionesPersonalizadasWrapper.wrap(intro);
var alineacion:AlineacionCentroCentro = new AlineacionCentroCentro(intro, intro._width2, intro._height2);
var escala:EscalaDimension = new EscalaDimension(intro, intro._width2, intro._height2, EscalaDimension.INSCRITO, intro._width2*0.85, intro._height2*0.85);
var lis:Object = new Object();
lis.resize = function(evt:Object) {
	trace("lis.resize: " + intro._width2);
	alineacion.alinear();
}
escala.addEventListener("resize", lis);
escala.escalar();
// FIN CÓDIGO CON INTRO


/*****************************************************************/
/************* FIJAR TAMAÑO DE LOS SCROLLS ***********************/
/*****************************************************************/
// CÓDIGO PARA PÁGINAS QUE TIENEN SCROLL
/* Forma de uso:
 * 1. Este código puede quedar activo (no hace falta taparlo) aunque la página no tenga scroll.
 * 2. Reemplazar el código de sección que viene en la plantilla por el código real en el que se carga el scroll (ver abajo donde dice "Reemplazar").
 */
/* Aclaraciones internas de programación:
 * Función no detectada:
 * contenido.seccion_2.scrolle.todo.contenido_mc.notif_fin_altura();
 * Posible motivo: en "script medidor externo.as" se redefine el contenido de contenido_mc
 * (al cargar un nuevo clip con MovieClipLoader).
 * La posible falla de diseño que hubo es que contenido_mc además de ser un contenedor tiene funciones.
 */
contenido.seccion_1/*Reemplazar por el código de sección donde se carga el scroll*/.scrolle.todo.notif_fin_carga();
/* CÓDIGO PARA EL DIMENSIONAMIENTO DEL SCROLL
 *
 * Forma de uso:
 *
 * 1. En páginas con dimensionamiento simple (centro-centro):
 * 1.1. Reemplazar los números con el ancho y el alto que tiene que ocupar el scroll.
 * 1.1'. Nota: esto se puede hacer yendo a la sección_x, creando adentro una capa guía y haciendo un rectángulo, luego tomar el ancho y alto de ese rectángulo
 *
 * 2. En páginas con alineación específica / detallada / dimensionamiento interno
 * 2.1. No hacer nada (puede quedar así que no producirá ningún efecto).
 */
contenido.seccion_1/*Reemplazar por el código de sección donde se carga el scroll*/.scrolle.todo.ajuste(640.9, 353.2);

// Las mismas 2 líneas de código anteriores se pueden repetir tantas veces como contenido con scroll haya, cumpliendo las mismas reglas recién explicadas.
contenido.seccion_2/*Reemplazar por el código de sección donde se carga el scroll*/.scrolle.todo.notif_fin_carga();
contenido.seccion_2/*Reemplazar por el código de sección donde se carga el scroll*/.scrolle.todo.ajuste(640.9, 353.2);
// FIN CÓDIGO DE FIJACIÓN DE TAMAÑO DE LOS SCROLLS

/*****************************************************************/
/************* ADAPTACIÓN AL ÁREA VISIBLE SIMPLE *****************/
/*****************************************************************/
// CÓDIGO DE ADAPTACIÓN AL ÁREA VISIBLE SIMPLE
/* Para alineación y escalamiento simple:
 * Todos los objetos se mueven juntos, y además están todos centrados.
 *
 * Recordar que es excluyente con el código de más abajo: "CÓDIGO DE ADAPTACIÓN..."
 * Esto es: si se habilita el de más abajo, hay que deshabilitar este, y vice versa.
 */
MovieClipDimensionesPersonalizadasWrapper.wrap(contenido);
var alineacion:AlineacionCentroCentro = new AlineacionCentroCentro(contenido, contenido._width2, contenido._height2);
var escala:EscalaDimension = new EscalaDimension(contenido, contenido._width2, contenido._height2, EscalaDimension.INSCRITO, contenido._width2*0.85, contenido._height2*0.85);
var lis:Object = new Object();
lis.resize = function(evt:Object) {
	trace("lis.resize: " + contenido._width2);
	alineacion.alinear();
}
escala.addEventListener("resize", lis);
escala.escalar();
// FIN CÓDIGO ALINEACIÓN SIMPLE

/*****************************************************************/
/************* ADAPTACIÓN AL ÁREA VISIBLE COMPLEJA ***************/
/*****************************************************************/
// CÓDIGO DE ADAPTACIÓN AL ÁREA VISIBLE CON ALINEACIÓN ESPECÍFICA
/* Para alineación más específica (cada símbolo / elemento va a un lugar específico)
 * Además tiene la función de escalamiento.
 *
 * Instrucciones básicas de uso:
 * 1. Recordar de pegar los archivos "Dimensionamiento.as" y "DimensionamientoInterno.as" en la carpeta "scripts"
 * 2. Recordar modificar el archivo "DimensionamientoInterno.as", en el cual hay que programar cada alineación de cada símbolo
 * 3. El archivo "Dimensionamiento.as" queda sin modificar (tal como fue pegado)
 *
 * Está aplicado a las contenido, para aplicarlo a la intro:
 * 1. Copiarlo
 * 2. cambiar "contenido" por "intro"
 */

// El siguiente código declara que se van a usar los archivos "Dimensionamiento.as" y "DimensionamientoInterno.as"
// y que será aplicado al símbolo "contenido" o "intro" (si se cambia "contenido" por "intro").
// Acá se cambian los números para determinar hasta dónde va a achicar por dimensionamiento interno y hasta donde por dimensionamiento externo
// O sea, hasta donde se mueve cada objeto independiente, y desde ahí a más chico se empieza a achicar todo junto.
// palabras clave: límite escala achicar achicamiento número
// los parámetros limite_1_w y limite_1_h se pasan con estimaciones hechas en base a las dimensiones de los objetos en tiempo de diseño
/*
var dimensionamiento = Dimensionamiento.aplicar(contenido, 850, 595, System.capabilities.screenResolutionX * 0.6, System.capabilities.screenResolutionY * 0.6, 3600, 2600);
var dimensionamiento_interno = DimensionamientoInterno.aplicar(contenido);

var controlador_dimensionamiento:Object = {};

controlador_dimensionamiento.resize = function(evt) {
	//trace("lis.resize: " + contenido._width2);
	dimensionamiento_interno.dimensionar(evt.w_ventana, evt.h_ventana);
}
dimensionamiento.addEventListener("resize", controlador_dimensionamiento);

// MODIFICAR ACÁ LAS DISTINTAS ALINEACIONES QUE VA A TENER CADA OBJETO
var alineacion_1 = AlineacionIzquierdaDerecha.aplicar(contenido.seccion_1.scrolle);
dimensionamiento_interno.agregar(alineacion_1);
var alineacion_2 = AlineacionArribaAbajo.aplicar(contenido.seccion_1.scrolle);
dimensionamiento_interno.agregar(alineacion_2);
var alineacion_3 = AlineacionDerecha.aplicar(contenido.boton_publicidad);
dimensionamiento_interno.agregar(alineacion_3);


dimensionamiento.escalar();
*/
// FIN CÓDIGO DE ADAPTACIÓN AL ÁREA VISIBLE CON ALINEACIÓN ESPECÍFICA

/*****************************************************************/
/******************** BOTONERA Y SECCIONES ***********************/
/*****************************************************************/
for(i=1; i<=120; i++) {
	var transicion_encender = TransicionColor.aplicar(contenido["boton_"+i]);
	transicion_encender.color = 0xFF0000;
	
	var transicion_apagar = TransicionColor.aplicar(contenido["boton_"+i]);
	transicion_apagar.color = 0x0000FF;
	
	var transicion_resaltar = TransicionColor.aplicar(contenido["boton_"+i]);
	transicion_resaltar.color = 0x00FF00;
	
	var transicion_desresaltar = TransicionColor.aplicar(contenido["boton_"+i]);
	transicion_desresaltar.color = 0x0000FF;

	Boton.aplicar(contenido["boton_"+i], {transicion_encender: transicion_encender, transicion_apagar: transicion_apagar, transicion_resaltar: transicion_resaltar, transicion_desresaltar: transicion_desresaltar});
	
	if(i==1) {
		transicion_encender.hacer_instantaneo();
		contenido["boton_"+i].encender();
	}
	else {
		transicion_apagar.hacer_instantaneo();
		contenido["boton_"+i].apagar();
	}
}

for(i=1; i<=10; i++) {
	var transicion_activar = TransicionAlpha.aplicar(contenido["seccion_"+i]);
	transicion_activar.alpha = 100;
	var transicion_desactivar = TransicionAlpha.aplicar(contenido["seccion_"+i]);
	transicion_desactivar.alpha = 0;
	Seccion.aplicar(contenido["seccion_"+i], {transicion_activar: transicion_activar, transicion_desactivar: transicion_desactivar});

	// código auxiliar para evitar la superposición de links (buscar "superposición de links" más abajo).
	transicion_desactivar.addEventListener2("fin_transicion", this, "fin_seccion");
	transicion_activar.addEventListener2("ini_transicion", this, "ini_seccion");
	// fin código auxiliar
	
	// Estado inicial desactivado
	if(i!=1)
		transicion_desactivar.hacer_instantaneo();
}

BotoneraSecciones.aplicar(contenido, contenido);

/*****************************************************************/
/******************* UN OBJETO QUE TAPA OTRO  ********************/
/*****************************************************************/
// Activar este código en las páginas que tienen un objeto de cambio de sección
// para el cambio de sección
// INICIO CÓDIGO CAMBIO DE SECCIÓN
/*
// Anulación de la difusión de eventos hacia los botones
// cuando el objeto de cambio de sección está haciendo la transición
// (recordar que FlashPlayer sólo difunde eventos de periféricos
// al 1er. objeto de la lista de detectores)

contenido.cambio.onRollOver = function() {
}
contenido.cambio.onRelease = function() {
}
contenido.cambio.useHandCursor = false;
*/
// FIN CÓDIGO DE UN OBJETO QUE TAPA A OTRO


/*****************************************************************/
/******************* LINKS HACIA OTRAS PÁGINAS********************/
/*****************************************************************/
// Para que las contenido tengan botones propios o links hacia otras páginas
// por ejemplo: links, botones a subsecciones
// INICIO CÓDIGO botones links
/* Forma de uso:
 * 1. activar el siguiente código
 * 2. Reemplazar seccion_comodin por sección_ y el número de sección en donde esté el botón
 * 3. Reemplazar link_simbolo por el nombre del link
 * 4. Si hay más links, repetir este código varias veces
 */
/*
var transicion_encender_link = TransicionColor.aplicar(contenido.seccion_comodin.link_simbolo);
var transicion_apagar_link = TransicionColor.aplicar(contenido.seccion_comodin.link_simbolo);
var transicion_resaltar_link = TransicionColor.aplicar(contenido.seccion_comodin.link_simbolo);
var transicion_desresaltar_link = TransicionColor.aplicar(contenido.seccion_comodin.link_simbolo);
Boton.aplicar(contenido.seccion_comodin.link_simbolo, 
	{transicion_encender: transicion_encender_link,
	transicion_apagar: transicion_apagar_link,
	transicion_resaltar: transicion_resaltar_link,
	transicion_desresaltar: transicion_desresaltar_link});

	contenido.seccion_comodin.link_simbolo.onRelease = function() {
		_root.limpia_links.getURL("http://www.facebook.com/", "_blank");
	}
	
	// Caso con subseccciones con scroll
	// contenido.seccion_comodin_a.seccion_comodin_b.scrolle.todo.contenido_mc.link_simbolo	
*/
// FIN CÓDIGO botones links

/*****************************************************************/
/*************************** SONIDOS *****************************/
/*****************************************************************/
// sonido de inicio de la intro (es el único que se arma diferente)
Sonidos.getInstance().sonar_inicio_intro();
// sonido cuando el mouse está sobre el botón ingresar
intro.boton_ingresar.addEventListener2("release", Sonidos.getInstance(), "sonar_sobre_boton_ingresar");
// sonido al hacer clic en el botón ingresar
intro.boton_ingresar.addEventListener2("release", Sonidos.getInstance(), "sonar_clic_boton_ingresar");
// sonido de desactivación de la intro
intro.addEventListener2("ini_desactivar", Sonidos.getInstance(), "sonar_fin_intro");
// sonido de activación del contenido de la página
contenido.addEventListener2("ini_activar", Sonidos.getInstance(), "sonar_incio_pagina");
for(i=1; contenido["seccion_"+i]!=undefined; i++) {
	// sonido de activación de una sección
	contenido["seccion_"+i].addEventListener2("ini_activar", Sonidos.getInstance(), "sonar_entrada_seccion");
	// sonido de desactivación de una sección
	contenido["seccion_"+i].addEventListener2("ini_desactivar", Sonidos.getInstance(), "sonar_salida_seccion");
}
for(i=1; contenido["boton_"+i]!=undefined; i++) {
	// sonido cuando el mouse pasa sobre un botón principal
	contenido["boton_"+i].addEventListener2("rollOver", Sonidos.getInstance(), "sonar_sobre_boton_principal");
	// sonido al hacer clic en un botón principal
	contenido["boton_"+i].addEventListener2("ini_desactivar", Sonidos.getInstance(), "sonar_clic_boton_principal");
}

/*****************************************************************/
/**************************** GALERÍA ****************************/
/*****************************************************************/
var galeria = contenido.seccion_5.galeria.galeria;
Galeria.aplicar(galeria);
galeria.cargar("fotos.xml");
galeria.filas = 2;
galeria.columnas = 1;
galeria.addEventListener2("fin_creacion_secciones", this, "fin_creacion_secciones");
galeria.addEventListener2("ini_cambio_imagen", this, "ini_cambio_imagen");
galeria.addEventListener2("fin_cambio_imagen", this, "ini_cambio_imagen");
galeria.addEventListener2("fin_carga_imagen", this, "fin_carga_imagen");
galeria.addEventListener2("boton_seccion_release", this, "boton_seccion_release");
galeria.addEventListener2("boton_scroll_release", this, "boton_scroll_release");
galeria.addEventListener2("activar_boton_scroll", this, "activar_boton_scroll");
galeria.addEventListener2("desactivar_boton_scroll", this, "desactivar_boton_scroll");

var imagen_width;
function fin_creacion_secciones(sublenguaje /*configuración, accesos_directos*/) {
	trace("fin_creacion_secciones, " + sublenguaje.galeria);
	//sublenguaje.galeria.numero_seccion = 2;
	imagen_width = sublenguaje.galeria.imagen._width;
}

function fin_creacion_botonera_imagenes(sublenguaje) {
	/*
	sublenguaje.cantidad_botones;
	sublenguaje.galeria.boton_imagen_{1..n}.addEventListener2("rollOver", transicion_pera, "hacer_gradual");
	*/
}

// evento posterior a "fin_creacion_botonera_imagenes"
function ini_cambio_seccion(sublenguaje) {
	/*
	sublenguaje.cantidad_botones;
	sublenguaje.galeria.boton_imagen_{1..n}.addEventListener2("rollOver", transicion_pera, "hacer_gradual");
	
	sublenguaje.cantidad_imagenes
	sublenguaje.numero_imagen
	
	sublengiaje.titulo_seccion
	*/
}

function ini_cambio_imagen(sublenguaje) {
	/*
	sublenguaje.galeria
	sublenguaje.imagen :MovieClip
	sublenguaje.descripcion :Campo
	sublenguaje.boton_imagen_anterior
	sublenguaje.boton_imagen_nuevo
	*/
	//trace("ini_cambio_imagen");
}

function fin_cambio_imagen(sublenguaje) {
	/*
	sublenguaje.galeria
	sublenguaje.imagen :MovieClip
	sublenguaje.descripcion :Campo
	sublenguaje.boton_imagen_anterior
	sublenguaje.boton_imagen_nuevo
	*/
	//trace("ini_cambio_imagen");
	//sublenguaje.imagen._xscale = 100;
}

function fin_carga_imagen(sublenguaje) {
	sublenguaje.imagen._alpha = 0;
	var transicion = TransicionAlpha.aplicar(sublenguaje.imagen);
	transicion.alpha = 100;
	transicion.time = 0.5;
	transicion.hacer_gradual();
}

function boton_seccion_release(sublenguaje) {
	trace("botón de cambio de sección presionado: " + sublenguaje.boton + ".");
}

/* Cuando el usuario hace click
 * en uno de los botones de scroll de las mini imágenes
 */
function boton_scroll_release(sublenguaje) {
	//galeria.botones_imagen._x = sublenguaje.x;
	var transicion = TransicionDesplazamientoX.aplicar(galeria.botones_imagen);
	transicion.x = sublenguaje.x;
	transicion.time = 0.5;
	transicion.transition = "easeOutQuad";
	transicion.hacer_gradual();
}

function activar_boton_scroll(sublenguaje) {
	sublenguaje.boton.enabled = true;
	var transicion = TransicionAlpha.aplicar(sublenguaje.boton);
	transicion.alpha = 100;
	transicion.time = 0.5;
	transicion.hacer_gradual();
}

function desactivar_boton_scroll(sublenguaje) {
	sublenguaje.boton.enabled = false;
	var transicion = TransicionAlpha.aplicar(sublenguaje.boton);
	transicion.alpha = 50;
	transicion.time = 0.5;
	transicion.hacer_gradual();
}

/*****************************************************************/
/******************** FORMULARIO DE CONTACTO *********************/
/*****************************************************************/
// archivos necesarios para validar la dirección de e-mail del formulario
import org.as2lib.regexp.Matcher;
import org.as2lib.regexp.Pattern;

trace("contenido.seccion_6.formulario.formulario: " + contenido.seccion_6.formulario.formulario);

/* Que los campos aparezcan inactivos al principio
 * (esto también se podría hacer poniendo en Flash los bordes con alpha = 50
 * y tapando este código).
 */
for(i=1; contenido.seccion_6.formulario.formulario["campo_"+i]!=undefined; i++) {
	contenido.seccion_6.formulario.formulario["campo_"+i].borde._alpha = 50;
}

Boton.aplicar(contenido.seccion_6.formulario.formulario.boton_enviar);

Formulario.aplicar(contenido.seccion_6.formulario.formulario);
trace(contenido.seccion_6.formulario.formulario.addEventListener2);
contenido.seccion_6.formulario.formulario.addEventListener2("campo_setFocus", this, "resaltar_campo");
function resaltar_campo(sublenguaje) {
	trace(resaltar_campo);
	// campos del formulario
	var transicion_encender = TransicionAlpha.aplicar(sublenguaje.campo.borde);
	transicion_encender.alpha = 100;
	transicion_encender.hacer_gradual();
}

/* código para apagar / atenuar los campos cuando el usuario se va del campo.
 * también se puede resaltar o atenuar la marca de campo obligatorio.
 */
contenido.seccion_6.formulario.formulario.addEventListener2("campo_killFocus", this, "desresaltar_campo");
function desresaltar_campo(sublenguaje) {
	var transicion_apagar = TransicionAlpha.aplicar(sublenguaje.campo.borde);
	transicion_apagar.alpha = 50;
	transicion_apagar.hacer_gradual();
}

contenido.seccion_6.formulario.formulario.addEventListener2("campo_changed", this, "marcar_campos");
function marcar_campos(sublenguaje) {
	if(sublenguaje.campo.valor!="") {
		// marcas del formulario  (de los campos obligatorios, etc.)
		var transicion_apagar = TransicionAlpha.aplicar(sublenguaje.marca);
		transicion_apagar.alpha = 0;
		transicion_apagar.hacer_gradual();
	}
	else {
		// marcas del formulario  (de los campos obligatorios, etc.)
		var transicion_encender = TransicionAlpha.aplicar(sublenguaje.marca);
		transicion_encender.alpha = 100;
		transicion_encender.hacer_gradual();
	}
	
}

contenido.seccion_6.formulario.formulario.addEventListener2("boton_enviar_release", this, "enviar_datos");
function enviar_datos(sublenguaje) {
	/* Acá se hacen las validaciones de los datos
	 * (es decir, se revisa que los datos estén bien ingresados y si no falta ninguno).
	 */
	// validación del campo nombre
	if(sublenguaje.formulario.campo_1.valor=="") {
		sublenguaje.resultado.valor = "Por favor ingrese su nombre.";
		return;   // return en este caso significa cancelar el envío del formulario. Es importante ponerlo para evitar que el formulario se envíe si faltan datos.
	}

	// validación del campo e-mail
	// pattern (en castellano patrón) es en este caso para validar el formato de direcciones de e-mail (si están bien o si el usuario tipeó mal, ejemplo: falta el @)
	var pattern = new Pattern("^([\\w\\-\\.]+)@(([\\w\\-]{2,}\\.)+[\\w\\-]{2,3})$");
	var matcher = new Matcher(pattern, sublenguaje.formulario.campo_3.valor);
	if(!matcher.matches()) {
		sublenguaje.resultado.valor = "Por favor ingrese una dirección de e-mail válida.";
		return;   // return en este caso significa cancelar el envío del formulario. Es importante ponerlo para evitar que el formulario se envíe si faltan datos.
	}
	
	sublenguaje.formulario.enviar("enviarMail.php",   // <-- Acá va el nombre del script PHP.
	{
		/* Acá se configura los nombres con los que se arma el mail en PHP.
		 * Ejemplo:
		 * campo_1 = nombre
		 * campo_2 = apellido
		 * ...
		 * campo_5 = mensaje
		 */
		nombre: sublenguaje.formulario.campo_1.valor,
		apellido: sublenguaje.formulario.campo_2.valor,
		email: sublenguaje.formulario.campo_3.valor,
		mensaje: sublenguaje.formulario.campo_4.valor
	});
	// Acá se borra el formulario
	sublenguaje.formulario.borrar();
	
	sublenguaje.resultado.valor = "Mensaje enviado correctamente.";
}



/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/************************* COMPONENTES INMODIFICABLES *******************/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/

// CÓDIGO PARA LA RUEDA DEL MOUSE EN EL SCROLL
// Este código puede quedar activo aunque la página no tenga scroll
for(i=1; i<=100; i++) {
	contenido["seccion_"+i].addEventListener2("ini_activar", this, "activar_seccion");
	contenido["seccion_"+i].addEventListener2("ini_desactivar", this, "desactivar_seccion");
}

function activar_seccion(evt) {
	Mouse.addListener(evt.target.scrolle.todo.mouseL);
}

function desactivar_seccion(evt) {
	Mouse.removeListener(evt.target.scrolle.todo.mouseL);
}

// Código para evitar superposición de links entre secciones
function ini_seccion(sublenguaje) {
	sublenguaje.target.receptor._visible = true;
}

function fin_seccion(sublenguaje) {
	sublenguaje.target.receptor._visible = false;
}
// fin código para evitar superposición de links entre secciones
